/**
 * @description 本地存储----同步
 * @param {*} key 键名 
 * @param {*} value 值
 */
const setStorage=(key,value)=>{
  try{
    wx.setStorageSync(key,value)
  }catch(e){
    console.log(`本地存储数据${key}失败`,e)
  }
}

/**
 * @description 本地获取----同步
 * @param {*} key 键名 
 */
const getStorage=(key)=>{
  try{
    const value=wx.getStorageSync(key)
    if(value){
      return value
    }
  }catch(e){
    console.log(`本地取值数据${key}失败`,e)
  }
}

/**
 * @description 本地删除----同步
 * @param {*} key 键名 
 */
const removeStorage=(key)=>{
  try{
    wx.removeStorageSync(key)
  }catch(e){
    console.log(`本地删除数据${key}失败`,e)
  }
}

/**
 * @description 本地清除----同步
 */
const clearStorage=()=>{
  try{
    wx.clearStorageSync();
  }catch(e){
    console.log(`本地清除数据失败`,e)
  }
}



//以下是异步的
/**
 * @description 本地的存储----异步
 * @param {*} key 
 * @param {*} data 
 */
// 异步方法采用对象参数传递 key 和data 不能叫做value 
const asyncSetStorage=(key,data)=>{
  return new Promise((resolve)=>{
      wx.setStorage({
        key,
        data,
        complete(res){
          resolve(res)
        }
      })
  })
}
/**
 * @description 本地的取值----异步
 * @param {*} key 
 * @param {*} resolve 将异步操作的结果通过 Promise 传递出去,如果不写这个res永远都是传不出去得不到值的
 */
const asyncGetStorage=(key)=>{
  return new Promise((resolve)=>{
      wx.getStorage({
        key,
        complete(res){
          resolve(res.data)
        }
      })
  })
}

/**
 * @description 本地的删除----异步
 * @param {*} key 
 */
const asyncRemoveStorage=(key)=>{
  return new Promise((resolve)=>{
      wx.removeStorage({
        key,
        complete(res){
          resolve(res)
        }
      })
  })
}
/**
 * @description 本地的清空----异步
 */
const asynClearStorage=(key)=>{
  return new Promise((resolve)=>{
      wx.clearStorage({
        key,
        complete(res){
          resolve(res)
        }
      })
  })
}


export {setStorage,getStorage,removeStorage,clearStorage,asyncSetStorage,asyncGetStorage,asyncRemoveStorage,asynClearStorage}